IF OBJECT_ID(N'tempdb..#ecom_despatch', N'U') IS NOT NULL Drop Table #ecom_despatch;
IF OBJECT_ID(N'tempdb..#ecom_direct_despatch', N'U') IS NOT NULL Drop Table #ecom_direct_despatch;

SELECT
	dh_oh_id,
	order_header.oh_ec_order_number AS order_id,
	order_header.oh_os_id AS order_status_id,
	CONVERT(Varchar, delivery_header.dh_datetime, 112) AS shipping_date,
	CASE
		WHEN courier_detail.cod_cdd_id = 13 THEN delivery_header.dh_metapack_carrier
		ELSE courier_detail.cod_name
	END AS shipping_carrier,
	CASE
		WHEN courier_detail.cod_cdd_id = 13 THEN delivery_header.dh_metapack_service_name
		ELSE delivery_method.dm_description
	END AS shipping_method,
	CASE
		WHEN courier_detail.cod_cdd_id = 13 THEN delivery_header.dh_metapack_carrier_consignment_code
		ELSE delivery_header.dh_consignment_number
	END AS shipping_tracking_number,
	delivery_line_item.dli_qty AS quantity_despatched,
	order_line_item.oli_ec_item_number AS order_item_code,
	(SELECT stock_location.sl_name
	FROM stock_location
	WHERE order_line_item.oli_sl_id = stock_location.sl_id) AS stock_location
INTO #ecom_despatch
FROM delivery_header
INNER JOIN delivery_line_item ON delivery_header.dh_id = delivery_line_item.dli_dh_id
INNER JOIN order_line_item ON delivery_line_item.dli_oli_id = order_line_item.oli_id
INNER JOIN order_header ON oh_id = oli_oh_id
INNER JOIN order_type ON order_type.ot_id = order_header.oh_ot_id
LEFT JOIN courier_detail ON delivery_header.dh_cod_id = courier_detail.cod_id
INNER JOIN delivery_method ON delivery_header.dh_dm_id = delivery_method.dm_id
WHERE (order_header.oh_os_id = 4
	OR order_header.oh_os_id = 5
	OR order_header.oh_os_id = 6)
	AND delivery_header.dh_ecommerce_exported = 0
	AND order_header.oh_ec_id = @ec_id;

UPDATE delivery_header SET dh_ecommerce_exported = 1 WHERE delivery_header.dh_oh_id IN (SELECT dh_oh_id FROM #ecom_despatch);

SELECT
	order_line_item.oli_oh_id AS dh_oh_id,
	order_header.oh_ec_order_number AS order_id,
	order_header.oh_os_id AS order_status_id,
	CONVERT(VARCHAR, GETDATE(), 112) AS shipping_date,
	'' AS shipping_carrier,
	delivery_method.dm_description AS shipping_method,
	'' AS shipment_tracking_number,
	order_line_item.oli_qty_sent AS quantity_despatched,
	order_line_item.oli_ec_item_number AS order_item_code,
	(SELECT stock_location.sl_name
    FROM stock_location
    WHERE order_line_item.oli_sl_id = stock_location.sl_id) AS stock_location
INTO
	#ecom_direct_despatch
FROM
	order_line_item
	INNER JOIN order_header ON oh_id = oli_oh_id
	INNER JOIN order_header_detail ON ohd_oh_id = oh_id
	INNER JOIN delivery_method ON dm_id = ohd_dm_id
WHERE
	order_header.oh_ecommerce_exported = 0
	AND order_line_item.oli_direct = 1
	AND ((order_header.oh_os_id = 5) OR (order_header.oh_os_id = 6))
	AND order_header.oh_ec_id = @ec_id;

UPDATE order_header SET oh_ecommerce_exported = 1 WHERE oh_id IN (SELECT dh_oh_id FROM #ecom_direct_despatch);

SELECT * FROM #ecom_despatch
UNION
SELECT * FROM #ecom_direct_despatch;